﻿#include <stdio.h>

/*
* 调用另一个函数
*/
#include "addfunction.h"
/**
* 定义了一种类型是 无符号的char 的指针, 引用是这个类型
*/

typedef unsigned char* byte_pointer;

/*
* 注意 所有声明函数都需要在 main 函数之前 才能被mian 函数调用
*/
void show_bytes(byte_pointer start, int len) {
	int i;
	for (i = 0; i < len; i++) {
		printf("%.2x", start[i]);
		printf("\n");
	}
}

// 将数值进行交换 
void inplace_swap(int* x, int* y) {
	*y = *x ^ *y;
	*x = *x ^ *y;
	*y = *x ^ *y;
}

// 数组反转 
void reverse_array(int a[], int cnt) {
	int first, last;
	for (first = 0, last = cnt - 1; first <= last; first++, last--) {
		inplace_swap(&a[first], &a[last]);
	}

	for (first = 0; first < cnt; first++) {
		printf(a[first]);
	}
}

int main() {
	//int val = 0x87654321;
	//byte_pointer valp = (byte_pointer) & val;
	//const char *s = "abcdef";
	//int i;
	//for (i = 0; i < strlen(s); i++) {

	//	/**
	//	* 目前看只是打印 他们的ascii 
	//	*/
	//	printf("%.2x", s[i]);
	//	printf("\n");
	//}

	//show_bytes(valp, 1);

	int a[] = { 1,2,3,4 };
	int cnt = 4;
	reverse_array(*a, cnt);

	return 0;
}



void show_int(int x) {
	/*
	* 获取x 的地址并转成无符号的char 类型
	*/
	show_bytes((byte_pointer)&x, sizeof(int));
}

void show_float(float x) {
	show_bytes((byte_pointer)&x, sizeof(float));
}

void show_pointer(void* x) {
	show_bytes((byte_pointer)&x, sizeof(void*));
}


